/*
 *  Copyright (c) 2012 Alaitsev I.K.
 *  Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 *  and associated documentation files (the "Software"), to deal in the Software without restriction,
 *  including without limitation the rights to use, copy, modify, merge, publish, distribute,
 *  sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
 *  furnished to do so, subject to the following conditions:
 *
 *  The above copyright notice and this permission notice shall be included in all copies or
 *  substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
 *  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 *  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#ifndef COMMON_DEFINES_AND_INCLUDES_H
#define COMMON_DEFINES_AND_INCLUDES_H
/*
 * Для поддержания плохого кода необходима функция, определяющая, является переменная
 * типа double NaN, или нет. К сожалению, со стандартами C и C++ беда в этом
 * отношении, посему такой вот костыль.
*/
#include <math.h>
#include <cmath>

#ifndef isfinite
  using std::isfinite;
#endif

#ifdef M_PI
  #undef M_PI
#endif
static const double_t M_PI = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899;

#ifdef M_LN10
  #undef M_LN10
#endif

static const double M_LN10 = log (10.);

#endif // COMMON_DEFINES_AND_INCLUDES_H
